扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
using namespace System;
ref class Foo
{
public:
Foo()
{
System::Console::WriteLine("Foo::Foo");
}
~Foo()
{
System::Console::WriteLine("Foo::~Foo");
}
public:
int m_iValue;
};
int _tmain()
{
int* pInt = new int;
int^ rInt = gcnew int;
Foo^ rFoo = gcnew Foo;
delete rFoo;
delete rInt;
delete pInt;
} |
int* pInt = new int;
0000004c mov ecx,4
00000051 call dword ptr ds:[03B51554h]
00000057 mov esi,eax
00000059 mov dword ptr [esp+18h],esi
int^ rInt = gcnew int;
0000005d mov ecx,788EF9D8h
00000062 call FCFAF66C
00000067 mov esi,eax
00000069 mov dword ptr [esi+4],0
00000070 mov edi,esi
Foo^ rFoo = gcnew Foo;
00000072 mov ecx,3B51768h
00000077 call FCFAF66C
0000007c mov esi,eax
0000007e mov ecx,esi
00000080 call dword ptr ds:[03B517ACh]
00000086 mov dword ptr [esp+1Ch],esi
delete rFoo;
0000008a mov ebx,dword ptr [esp+1Ch]
0000008e test ebx,ebx
00000090 je 000000A4
00000092 mov ecx,ebx
00000094 call dword ptr ds:[03FD0028h]
0000009a mov dword ptr [esp+14h],0
000000a2 jmp 000000AC
000000a4 mov dword ptr [esp+14h],0
delete rInt;
000000ac mov edx,edi
000000ae mov ecx,788F747Ch
000000b3 call FC8D20FD
000000b8 mov ebp,eax
000000ba test ebp,ebp
000000bc je 000000D0
000000be mov ecx,ebp
000000c0 call dword ptr ds:[03FD0020h]
000000c6 mov dword ptr [esp+10h],0
000000ce jmp 000000D8
000000d0 mov dword ptr [esp+10h],0
delete pInt;
000000d8 mov ecx,dword ptr [esp+18h]
000000dc call dword ptr ds:[03B51540h]
|
int* pInt = new int;
0000004c mov ecx,4
00000051 call dword ptr ds:[03B51554h] |
int^ rInt = gcnew int;
0000005d mov ecx,788EF9D8h
00000062 call FCFAF66C
。。。
Foo^ rFoo = gcnew Foo;
00000072 mov ecx,3B51768h
00000077 call FCFAF66C |
0x00F73404 d8 f9 8e 78 00 00 00 00 。。。 |
delete pInt;
000000d8 mov ecx,dword ptr [esp+18h]
000000dc call dword ptr ds:[03B51540h]
比较简单,就是传入地址,然后调用operator delete来释放类存,会调用析构函数 |
delete rInt;
000000ac mov edx,edi
000000ae mov ecx,788F747Ch
000000b3 call FC8D20FD |
濠电姷鏁告慨鐑姐€傛禒瀣劦妞ゆ巻鍋撻柛鐔锋健閸┾偓妞ゆ巻鍋撶紓宥咃躬楠炲啫螣鐠囪尙绐為梺褰掑亰閸撴盯鎮惧ú顏呪拺闂傚牊鍗曢崼銉ョ柧婵犲﹤瀚崣蹇旂節婵犲倻澧涢柛瀣ㄥ妽閵囧嫰寮介妸褋鈧帡鏌熼挊澶婃殻闁哄瞼鍠栭幃婊堝煛閸屾稓褰嬮柣搴ゎ潐濞叉ê鐣濈粙璺ㄦ殾闁割偅娲栭悡娑㈡煕鐏炲墽鐭嬫繛鍫熸倐濮婄粯鎷呯粵瀣異闂佹悶鍔嬮崡鍐茬暦閵忋倕鍐€妞ゆ劑鍎卞皬闂備焦瀵х粙鎴犫偓姘煎弮瀹曚即宕卞Ο闀愮盎闂侀潧鐗嗛幊搴㈡叏椤掆偓閳规垿鍩ラ崱妞剧凹濠电姰鍨洪敋閾荤偞淇婇妶鍛櫤闁稿鍊圭换娑㈠幢濡纰嶉柣搴㈣壘椤︾敻寮诲鍫闂佸憡鎸鹃崰搴敋閿濆鏁嗗〒姘功閻绻涢幘鏉戠劰闁稿鎹囬弻锝呪槈濞嗘劕纾抽梺鍝勬湰缁嬫垿鍩為幋锕€宸濇い鏇炴噺閳诲﹦绱撻崒娆戝妽妞ゃ劌鎳橀幆宀勫磼閻愰潧绁﹂柟鍏肩暘閸斿矂鎮為崹顐犱簻闁圭儤鍨甸鈺呮倵濮橆剦妲归柕鍥у瀵粙濡歌閸c儳绱撴担绛嬪殭婵☆偅绻堝濠氭偄绾拌鲸鏅i悷婊冪Ч閹﹢鎳犻鍌滐紲闁哄鐗勯崝搴g不閻愮儤鐓涢悘鐐跺Г閸犳﹢鏌℃担鐟板鐎规洜鍠栭、姗€鎮╅搹顐ら拻闂傚倷娴囧畷鍨叏閹惰姤鈷旂€广儱顦崹鍌炴煢濡尨绱氶柨婵嗩槸缁€瀣亜閺嶃劎鈽夋繛鍫熺矒濮婅櫣娑甸崨顔俱€愬銈庡亝濞茬喖宕洪埀顒併亜閹哄棗浜鹃梺鎸庢穿婵″洤危閹版澘绫嶉柛顐g箘椤撴椽姊虹紒妯哄鐎殿噮鍓欒灃闁告侗鍠氶崢鎼佹⒑閸撴彃浜介柛瀣閹﹢鏁冮崒娑氬幈闁诲函缍嗛崑鍡樻櫠椤掑倻纾奸柛灞剧☉缁椦囨煙閻熸澘顏柟鐓庢贡閹叉挳宕熼棃娑欐珡闂傚倸鍊风粈渚€骞栭銈傚亾濮樺崬鍘寸€规洖缍婇弻鍡楊吋閸涱垽绱遍柣搴$畭閸庨亶藝娴兼潙纾跨€广儱顦伴悡鏇㈡煛閸ャ儱濡煎褜鍨伴湁闁绘ǹ绉鍫熺畳闂備焦瀵х换鍌毼涘Δ鍛厺闁哄洢鍨洪悡鍐喐濠婂牆绀堟慨妯挎硾閽冪喖鏌曟繛褍瀚烽崑銊╂⒑缂佹ê濮囨い鏇ㄥ弮閸┿垽寮撮姀鈥斥偓鐢告煥濠靛棗鈧懓鈻嶉崶銊d簻闊洦绋愰幉楣冩煛鐏炵偓绀嬬€规洟浜堕、姗€鎮㈡總澶夌处